package com.fish.anne.webapp.action;

import java.util.List;

import com.fish.anne.model.AutoBrand;
import com.fish.anne.service.AutoBrandManager;
import com.fish.anne.service.AutoManager;
import com.opensymphony.xwork2.Preparable;

public class AutoBrandAction extends BaseAction implements Preparable {
	private AutoBrandManager autoBrandManager;
	private AutoManager autoManager;

	public void setAutoManager(AutoManager autoManager) {
		this.autoManager = autoManager;
	}

	private List<AutoBrand> autoBrands;
	public void setAutoBrands(List<AutoBrand> autoBrands) {
		this.autoBrands = autoBrands;
	}

	private AutoBrand autoBrand;
	private Long brandId;

	public void setAutoBrandManager(AutoBrandManager autoBrandManager) {
		this.autoBrandManager = autoBrandManager;
	}

	public List<AutoBrand> getAutoBrands() {
		return autoBrands;
	}

	/**
	 * Grab the entity from the database before populating with request
	 * parameters
	 */
	public void prepare() {
		if (getRequest().getMethod().equalsIgnoreCase("post")) {
			// prevent failures on new
			String autoBrandId = getRequest().getParameter("autoBrand.brandId");
			if (autoBrandId != null && !autoBrandId.equals("")) {
				autoBrand = autoBrandManager.get(new Long(autoBrandId));
			}
		}
	}

	public String list() {
		autoBrands = autoBrandManager.getAll();
		return SUCCESS;
	}

	public void setBrandId(Long brandId) {
		this.brandId = brandId;
	}

	public AutoBrand getAutoBrand() {
		return autoBrand;
	}

	public void setAutoBrand(AutoBrand autoBrand) {
		this.autoBrand = autoBrand;
	}

	public String delete() {
		if (this.autoManager.isBrandUsed(brandId.intValue())) {
			autoBrandManager.remove(brandId);
			saveMessage(getText("autoBrand.deleted"));
		}

		return SUCCESS;
	}

	public String batchDelete() {
		if (autoBrands == null) {
			return SUCCESS;
		}
		for (AutoBrand autoBrand : autoBrands) {
			if (autoBrand != null && autoBrand.getBrandId() != null) {
				if (!this.autoManager.isBrandUsed(autoBrand.getBrandId().intValue())) {
					autoBrandManager.remove(autoBrand.getBrandId());
				}
			}
		}
		String key = "common.deleted";
		saveMessage(getText(key));
		return SUCCESS;
	}

	public String edit() {
		if (brandId != null) {
			autoBrand = autoBrandManager.get(brandId);
		} else {
			autoBrand = new AutoBrand();
		}

		return SUCCESS;
	}

	public String save() throws Exception {

		boolean isNew = (autoBrand.getBrandId() == null);

		autoBrandManager.save(autoBrand);

		String key = (isNew) ? "autoBrand.added" : "autoBrand.updated";
		saveMessage(getText(key));
		this.brandId = this.autoBrand.getBrandId();

		return SUCCESS;

	}
}